#ifndef HAL_GPIO_H
#define HAL_GPIO_H

/* GPIO功能的移植和封装也是跨平台HAL设计的基础部分。
 * 下面帮你完成标准化、通用可扩展的hal_gpio.h/.c，让board_gpio_init()不再直接访问底层driverlib，而全部通过HAL接口。
 * AGPIO的模拟/数字切换是许多MCU的通用需求（有的叫AGPIO，有的叫“模拟引脚复用控制”或“Pad配置”），完全可以归入hal_gpio。
 * 我们可以抽象为hal_gpio_set_analog_mode(pin, enable)这样的接口。
*/

#include <stdint.h>
#include <stdbool.h>

// GPIO端口定义（跨平台用数字/枚举方式，兼容多MCU）
typedef enum {
    HAL_GPIO_PORT_A,
    HAL_GPIO_PORT_B,
    HAL_GPIO_PORT_H,
    // ... 其他端口按需添加
} hal_gpio_port_t;

/**
 * @brief 解锁指定端口的所有GPIO配置
 * @param port 端口号（如HAL_GPIO_PORT_A等）
 * @return true 成功，false 失败
 */
bool hal_gpio_unlock_port(hal_gpio_port_t port);

/**
 * @brief 板级GPIO初始化（如解锁、pinmux、上下拉、复用等）
 */
//void hal_gpio_board_init(void);

/**
 * @brief 配置某个引脚为模拟/数字功能
 * @param pin      引脚号
 * @param is_analog true为模拟输入，false为数字IO
 */
void hal_gpio_set_analog_mode(uint32_t pin, bool is_analog);

/**
 * @brief 配置引脚复用功能（pinmux）
 * @param pinConfig 由芯片头文件定义的pin复用宏
 */
void hal_gpio_set_pinmux(uint32_t pinConfig);

#endif // HAL_GPIO_H
